package com.xch.stack;

import com.xch.array.Array;

import java.util.StringJoiner;

public class ArrayStack<E> implements Stack<E> {

    private Array<E> array;

    public ArrayStack() {
        array = new Array();
    }

    public ArrayStack(int capacity) {
        array = new Array(capacity);
    }

    public int getCapacity() {
        return array.getCapacity();
    }

    public int getSize() {
        return array.getSize();
    }

    public boolean isEmpty() {
        return array.isEmpty();
    }

    public void push(E e) {
        array.addLast(e);
    }

    public E pop() {
        return array.removeLast();
    }

    public E peek() {
        return array.getLast();
    }

    @Override
    public String toString() {

        StringJoiner sj = new StringJoiner(", ", "Queue front [", "] tail");
        for (int i = 0; i < array.getSize(); i++) {
            sj.add(array.get(i).toString());
        }

        return sj.toString();
    }


    public static void main(String[] args) {
        ArrayStack<String> stringArrayStack = new ArrayStack<>();
        stringArrayStack.push("a");
        stringArrayStack.push("b");
        stringArrayStack.push("c");
        stringArrayStack.push("d");
        stringArrayStack.push("e");
        stringArrayStack.push("f");
        stringArrayStack.push("g");
        stringArrayStack.push("h");
        stringArrayStack.push("i");
        stringArrayStack.push("j");

        System.out.println(stringArrayStack);
    }
}
